package top.lwaiting.sqlSession;

import org.dom4j.DocumentException;
import top.lwaiting.config.XMLConfigBuilder;
import top.lwaiting.pojo.Configuration;
import top.lwaiting.sqlSession.impl.DefaultSqlSessionFactory;

import java.beans.PropertyVetoException;
import java.io.InputStream;

/**
 * 第一: 使用dom4j解析配置文件，将解析出来的内容封装到容器对象中
 * 第二: 创建SqlSessionFactory对象;生产sqlSession :会话对象 (工厂模式)
 * @author YANG
 * @version V1.0
 * @date 2024/1/12 17:53
 * @see SqlSessionFactoryBuilder
 **/
public class SqlSessionFactoryBuilder {

    public SqlSessionFactory builder(InputStream in) throws DocumentException, PropertyVetoException {
        // 第一：使用dom4j解析配置文件，将解析出来的内容封装到容器对象中（Configuration）
        XMLConfigBuilder xmlConfigBuilder = new XMLConfigBuilder();
        Configuration configuration = xmlConfigBuilder.parseConfig(in);

        // 第二: 创建SqlSessionFactory对象;工厂类 生产sqlSession :会话对象 (工厂模式)
        DefaultSqlSessionFactory defaultSqlSessionFactory = new DefaultSqlSessionFactory(configuration);

        return defaultSqlSessionFactory;
    }
}
